#include <iostream>
using namespace std;

class Dad
{
public:
	static int m_A;//静态成员需要类内声明，类外初始化。 
	
	static void func()
	{
		cout << "Dad下的static void func函数调用。" << endl; 
	}
};
int Dad::m_A = 100;

class Son :public Dad
{
public:
	static int m_A;
	static void func()
	{
		cout << "Son下的static void func函数调用。" << endl; 
	}
};
int Son::m_A = 100;

//同名的静态成员属性 
void test1()
{
	cout << "通过对象访问：" << endl; 
    Son s;
	cout << "Son 下 m_A = " <<	s.m_A << endl;
	cout << "Dad 下 m_A = " <<	s.Dad::m_A << endl;
	
	cout << "通过类名访问：" << endl; 
	cout << "Son 下 m_A = " << Son::m_A << endl;
	cout << "Dad 下 m_A = " << Son::Dad::m_A << endl;
	//第一个：：代表通过类名方式访问 ，第二个：：表示访问父类作用域下 
} 

//同名静态函数
void test2()
{
	//1.通过对象访问 
	Son s;
	s.func();
	s.Dad::func();
	
	//2.通过类名访问
	Son::func();
	Son::Dad::func(); 
}

//子类出现与父类同名的函数会直接屏蔽掉父类中所有的同名函数，所以必须叫上父类的作用域下
//eg：Son：：Dad：：func（10）； 

int main ()
{
	test1();
	test2();
	return 0;
}